"""DataBridge 数据桥接服务 - Gunicorn 配置文件

用于生产环境部署的 Gunicorn 服务器配置
提供高性能的 WSGI 服务器配置，支持多进程和异步处理
"""

import multiprocessing
import os

# 服务器配置
bind = "0.0.0.0:8000"  # 绑定地址和端口
backlog = 2048  # 监听队列大小

# 工作进程配置
workers = multiprocessing.cpu_count() * 2 + 1  # 工作进程数量
worker_class = "uvicorn.workers.UvicornWorker"  # 使用 Uvicorn worker
worker_connections = 1000  # 每个工作进程的最大连接数
max_requests = 1000  # 每个工作进程处理的最大请求数
max_requests_jitter = 50  # 最大请求数的随机抖动

# 超时配置
timeout = 30  # 工作进程超时时间
keepalive = 2  # Keep-Alive 连接的等待时间
graceful_timeout = 30  # 优雅关闭超时时间

# 日志配置
accesslog = "/var/log/brain_wave/access.log"  # 访问日志路径
errorlog = "/var/log/brain_wave/error.log"   # 错误日志路径
loglevel = "info"  # 日志级别
access_log_format = '%(h)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s" %(D)s'

# 进程管理
preload_app = True  # 预加载应用
daemon = False  # 不以守护进程运行（宝塔面板管理）
pidfile = "/var/run/brain_wave.pid"  # PID 文件路径

# 用户和组（根据实际部署环境调整）
# user = "www"
# group = "www"

# SSL 配置（如果需要 HTTPS）
# keyfile = "/path/to/keyfile"
# certfile = "/path/to/certfile"

# 其他配置
tmp_upload_dir = None  # 临时上传目录
secure_scheme_headers = {
    'X-FORWARDED-PROTOCOL': 'ssl',
    'X-FORWARDED-PROTO': 'https',
    'X-FORWARDED-SSL': 'on'
}

# 环境变量
raw_env = [
    'ENVIRONMENT=production',
]

def when_ready(server):
    """服务器启动完成时的回调"""
    server.log.info("DataBridge 数据桥接服务启动完成")

def worker_int(worker):
    """工作进程收到 SIGINT 信号时的回调"""
    worker.log.info("工作进程 %s 收到中断信号", worker.pid)

def pre_fork(server, worker):
    """工作进程 fork 前的回调"""
    server.log.info("工作进程 %s 即将启动", worker.pid)

def post_fork(server, worker):
    """工作进程 fork 后的回调"""
    server.log.info("工作进程 %s 已启动", worker.pid)

def pre_exec(server):
    """执行前的回调"""
    server.log.info("服务器即将重新执行")

def on_exit(server):
    """服务器退出时的回调"""
    server.log.info("脑波监测系统服务器正在关闭")